package antel.com.uy;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.Date;

import com.agencia.logica.IAdminAgenciaCobranza;
import com.agencia.logica.IAdminUsuario;

import antel.com.connection.DataSocketAnular;
import antel.com.connection.DataSocketBuscar;
import antel.com.connection.DataSocketLogin;
import antel.com.connection.DataSocketVenta;
import antel.com.constant.Constants;

public class AgenciaProtocol {
	private static errors logSys = errors.getInstance();

	public Object processInput(ObjectInputStream objInput, String host) throws IOException, ClassNotFoundException {
		
		Object objOutput = null;
		Object objRead = objInput.readObject();
		DataSocketLogin objLogin = null;
		DataSocketVenta objVenta = null;
		DataSocketAnular objAnular = null;
		DataSocketBuscar objBuscar = null;
		
		/*Compruebo el tipo de Objeto enviado*/
		if (objRead instanceof DataSocketLogin){
 
			logSys.writeError("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg08"));
			System.out.println("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg08"));

			objLogin = (DataSocketLogin) objRead;
			
			//IAdminAgenciaCobranza.getIAdminUsuario().Login(
			
			/*UTILIZAR METODO Login de ADMINUSUARIOIMP
			  
			 if(Login(objLogin.getUsuario(), objLogin.getPassword(), objLogin.getOrigen())){
			 	objLogin.setOK(true);
			 }
			  
			 * */
			objLogin.setOK(true);
			return objLogin;

		} else if(objRead instanceof DataSocketVenta){
			logSys.writeError("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg09"));
			System.out.println("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg09"));
			
			objVenta = (DataSocketVenta) objRead;
			
			
			
			/*UTILIZAR METODO IngresarVenta de AdminVentaImp
			Venta venta = new Venta();  
			 * */
			
			
			
			objVenta.setError(null);
			objVenta.setImporte((double) 200);
			
			return objVenta;
		
		}else if (objRead instanceof DataSocketAnular){
			logSys.writeError("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg10"));
			System.out.println("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg10"));
			
			objAnular = (DataSocketAnular) objRead;
			
			/*UTILIZAR METODO AnularVenta de AdminVentaImp
			 * */
			objAnular.setIdAnulado((double) 1);
			
			return objAnular;
			
		}else if (objRead instanceof DataSocketBuscar){
			logSys.writeError("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg14"));
			System.out.println("Cliente: " + host + " Port:" +  Constants.getGlobalParam().get("port")+" "+ Constants.getMsg().get("msg14"));
			
			objBuscar = (DataSocketBuscar) objRead;
			
			/*UTILIZAR METODO VerificarDatosVenta de AdminVentaImp
			 * */
			Date fecha = new Date();
			
			objBuscar.setFechaInicio(fecha);
			objBuscar.setMatricula("1234MBA");
			objBuscar.setMinutos(50);
			objBuscar.setImporte((double) 450);
			return objBuscar;
			
		}


		return objOutput;
	}

}
